package com.hhck.config;

import com.hhck.filter.LoginCheckFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;

/**
 * 原生Servlet配置类
 */
@Configuration
public class ServletConfig {

    // 注入Redis模板
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 过滤器注册对象（注册原生Servlet中的过滤器）
     */
    @Bean
    public FilterRegistrationBean FilterRegistrationBean() {

        // 创建过滤器注册对象
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();

        // 创建过滤器对象
        LoginCheckFilter loginCheckFilter = new LoginCheckFilter();

        // 设置Redis模板类（用于登录限制校验token）
        loginCheckFilter.setRedisTemplate(stringRedisTemplate);

        // 注册自定义过滤器
        filterRegistrationBean.setFilter(loginCheckFilter);

        // 指定拦截的请求（拦截所有请求，白名单在过滤器中添加）
        filterRegistrationBean.addUrlPatterns("/*");

        return filterRegistrationBean;
    }

}

